This specification relates to securing data.
Given the proliferation of computing systems and other electronic devices, the security and authenticity of data and data communications are paramount concerns as such data often contain sensitive information (e.g., financial records, medical records, personal information, etc.). Cryptographic algorithms are commonly used to authenticate, secure, and verify the integrity of data and/or data communications. Some cryptographic algorithms, for example, rely upon the use of hash functions, e.g., SHA-1, SHA-256, MD5, RIPEMD, HMAC, etc. Cryptographic schemes utilizing hash functions are often implemented through the use of general purpose computing devices or dedicated, special-purpose hardware. However, implementations based on general purpose computing devices may not be suitable for applications demanding a small form factor, as the versatility offered by such computing devices tends to make them relatively large. Further, implementations based on dedicated, special-purpose hardware may not be a viable option for applications requiring the flexibility to change from use of one cryptographic algorithm to another, e.g., from a cryptographic algorithm implementing SHA-1 to a cryptographic algorithm implementing SHA-256.